Даны целые числа a и k.
Выведите число, которое получается из а
установкой значения k-го бита в 1.
Вход. В одной строке заданы два
числа a и k (0 ≤ a ≤ 109). Самый младший
бит числа a считать нулевым битом.
Выход. Выведите число a с установленным k-ым битом.
Пример входа |
Пример выхода |
12 1 |
14 |
элементарная задача – битовые операции
Известно, что
степень двойки можно вычислить сдвигом влево: 2n = 1 << n.
Искомым результатом будет значение a
OR (1 << k).
Читаем входные данные. Вычисляем и выводим ответ.
scanf("%d %d",&a,&k);
a = a | (1
<< k);
printf("%d\n",a);
#include <cstdio>
#include <bitset>
using namespace std;
int a, k, res;
bitset<32> bset;
int main()
{
scanf("%d
%d", &a, &k);
bset = (bitset<32>)a;
bset.set(k);
res = (int)bset.to_ulong();
printf("%d\n", res);
return 0;
}
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
int a = con.nextInt(), k = con.nextInt();
int res = a | (1 << k);
System.out.println(res);
con.close();
}
}